home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 004 / code.arc / CODE.BAS (.txt)
Encoding:
GW-BASIC  |  1986-10-29  |  8.4 KB  |  279 lines

  1. 100  REM'************************************************************************
  2. 110  REM'                            PC-CODE
  3. 120  REM'************************************************************************
  4. 130  REM'CODE PRACTICE PROGRAM FOR GWBASIC BY GARY BURRELL AND RICK WASILUK
  5. 140  DIM V(255),X(255),Y(255),Z(255),D(5),C$(255),L$(255)
  6. 150  CLS
  7. 160  T = 105:TT = 20'
  8. 170  PLAY "MFMLT105O3"'                          ** SET DEFAULT CODE SPEED **
  9. 180  C$(32) = "P12"'                                       *   *
  10. 190  C$(33) = ""
  11. 200  C$(34) = ""
  12. 210  C$(35) = ""
  13. 220  C$(36) = ""
  14. 230  C$(37) = ""
  15. 240  C$(38) = ""
  16. 250  C$(39) = ""
  17. 260  C$(40) = ""
  18. 270  C$(41) = ""
  19. 280  C$(42) = ""
  20. 290  C$(43) = ""
  21. 300  C$(44) = "L16GP48L16GP48L48GP48L48GP48L16GP48L16GP16"'* , *
  22. 310  C$(45) = "L16GP48L48GP48L48GP48L48GP48L16GP16"'       * - *
  23. 320  C$(46) = "L48GP48L16GP48L48GP48L16GP48L48GP48L16GP16"'* . *
  24. 330  C$(47) = "L16GP48L48GP48L48GP48L16GP48L48GP16"'       * / *
  25. 340  C$(48) = "L16GP48L16GP48L16GP48L16GP48L16GP16"'       * 0 *
  26. 350  C$(49) = "L48GP48L16GP48L16GP48L16GP48L16GP16"'       * 1 *
  27. 360  C$(50) = "L48GP48L48GP48L16GP48L16GP48L16GP16"'       * 2 *
  28. 370  C$(51) = "L48GP48L48GP48L48GP48L16GP48L16GP16"'       * 3 *
  29. 380  C$(52) = "L48GP48L48GP48L48GP48L48GP48L16GP16"'       * 4 *
  30. 390  C$(53) = "L48GP48L48GP48L48GP48L48GP48L48GP16"'       * 5 *
  31. 400  C$(54) = "L16GP48L48GP48L48GP48L48GP48L48GP16"'       * 6 *
  32. 410  C$(55) = "L16GP48L16GP48L48GP48L48GP48L48GP16"'       * 7 *
  33. 420  C$(56) = "L16GP48L16GP48L16GP48L48GP48L48GP16"'       * 8 *
  34. 430  C$(57) = "L16GP48L16GP48L16GP48L16GP48L48GP16"'       * 9 *
  35. 440  C$(58) = ""
  36. 450  C$(59) = ""
  37. 460  C$(60) = ""
  38. 470  C$(61) = ""
  39. 480  C$(62) = ""
  40. 490  C$(63) = "L48GP48L48GP48L16GP48L16GP48L48GP48L48GP16"'* ? *
  41. 500  C$(64) = ""
  42. 510  C$(65) = "L48GP48L16GP16"'                            * A *
  43. 520  C$(66) = "L16GP48L48GP48L48GP48L48GP16"'              * B *
  44. 530  C$(67) = "L16GP48L48GP48L16GP48L48GP16"'              * C *
  45. 540  C$(68) = "L16GP48L48GP48L48GP16"'                     * D *
  46. 550  C$(69) = "L48GP16"'                                   * E *
  47. 560  C$(70) = "L48GP48L48GP48L16GP48L48GP16"'              * F *
  48. 570  C$(71) = "L16GP48L16GP48L48GP16"'                     * G *
  49. 580  C$(72) = "L48GP48L48GP48L48GP48L48GP16"'              * H *
  50. 590  C$(73) = "L48GP48L48GP16"'                            * I *
  51. 600  C$(74) = "L48GP48L16GP48L16GP48L16GP16"'              * J *
  52. 610  C$(75) = "L16GP48L48GP48L16GP16"'                     * K *
  53. 620  C$(76) = "L48GP48L16GP48L48GP48L48GP16"'              * L *
  54. 630  C$(77) = "L16GP48L16GP16"'                            * M *
  55. 640  C$(78) = "L16GP48L48GP16"'                            * N *
  56. 650  C$(79) = "L16GP48L16GP48L16GP16"'                     * O *
  57. 660  C$(80) = "L48GP48L16GP48L16GP48L48GP16"'              * P *
  58. 670  C$(81) = "L16GP48L16GP48L48GP48L16GP16"'              * Q *
  59. 680  C$(82) = "L48GP48L16GP48L48GP16"'                     * R *
  60. 690  C$(83) = "L48GP48L48GP48L48GP16"'                     * S *
  61. 700  C$(84) = "L16GP16"'                                   * T *
  62. 710  C$(85) = "L48GP48L48GP48L16GP16"'                     * U *
  63. 720  C$(86) = "L48GP48L48GP48L48GP48L16GP16"'              * V *
  64. 730  C$(87) = "L48GP48L16GP48L16GP16"'                     * W *
  65. 740  C$(88) = "L16GP48L48GP48L48GP48L16GP16"'              * X *
  66. 750  C$(89) = "L16GP48L48GP48L16GP48L16GP16"'              * Y *
  67. 760  C$(90) = "L16GP48L16GP48L48GP48L48GP16"'              * Z *
  68. 770  PY$ = "PRESS ANY KEY"'                       *                  *
  69. 780  PR$ = "WHICH CHARACTER?"'                    *                  *
  70. 790  REM PLSO MATRIX
  71. 800  L$(48)="ZERO/"
  72. 810  L$(49)="ONE/"
  73. 820  L$(50)="TWO/"
  74. 830  L$(51)="THREE/"
  75. 840  L$(52)="FOUR/"
  76. 850  L$(53)="FIVE/"
  77. 860  L$(54)="SIX/"
  78. 870  L$(55)="SEVEN/"
  79. 880  L$(56)="EIGHT/"
  80. 890  L$(57)="NINE/"
  81. 900  L$(65)="ALFA/"
  82. 910  L$(66)="BRAVO/"
  83. 920  L$(67)="CHARLIE/"
  84. 930  L$(68)="DELTA/"
  85. 940  L$(69)="ECHO/"
  86. 950  L$(70)="FOXTROT/"
  87. 960  L$(71)="GOLF/"
  88. 970  L$(72)="HOTEL/"
  89. 980  L$(73)="INDIA/"
  90. 990  L$(74)="JULIETT/"
  91. 1000  L$(75)="KILO/"
  92. 1010  L$(76)="LIMA/"
  93. 1020  L$(77)="MIKE/"
  94. 1030  L$(78)="NOVEMBER/"
  95. 1040  L$(79)="OSCAR/"
  96. 1050  L$(80)="PAPA/"
  97. 1060  L$(81)="QUEBEC/"
  98. 1070  L$(82)="ROMEO/"
  99. 1080  L$(83)="SIERRA/"
  100. 1090  L$(84)="TANGO/"
  101. 1100  L$(85)="UNIFORM/"
  102. 1110  L$(86)="VICTOR/"
  103. 1120  L$(87)="WHISKEY/"
  104. 1130  L$(88)="XRAY/"
  105. 1140  L$(89)="YANKEE/"
  106. 1150  L$(90)="ZULU/"
  107. 1160  CLS
  108. 1170  PRINT:PRINT:PRINT:PRINT
  109. 1180  PRINT "                      PC-CODE MORSE CODE TRAINING PROGRAM"
  110. 1190  PRINT:PRINT:PRINT
  111. 1200  PRINT "THIS PROGRAM IS DESIGNED TO GENERATE MORSE CODE FROM ANY OF THREE MODES."
  112. 1210  PRINT "MANUAL INPUT MODE, RANDOM FIVE-CHARACTER CODE GROUPS AND RANDOM"
  113. 1220  PRINT "PLSO (PLAIN LANGUAGE SPELLED OUT) MODE. A HARD COPY OF GENERARTED  "
  114. 1230  PRINT "CODE GROUPS CAN BE PROVIDED AND THE CODE GROUPS CAN BE SAVED AND/OR"
  115. 1240  PRINT "MERGED FOR LATER USE AND OUTPUT."
  116. 1250  PRINT:PRINT "PROVIDE APPROPRIATE RESPONSE TO EACH QUESTION AS REQUIRED AND"
  117. 1260  PRINT "USE CAPITAL LETTERS ONLY FOR ALL KEYBOARD ENTRIES. MAX SPEED 50 WPM"
  118. 1270  PRINT:PRINT
  119. 1280  PRINT"ENTER ANY KEY TO CONTINUE"
  120. 1290  S$=INKEY$:IF S$="" THEN 1290
  121. 1300  CLS:GOTO 1350
  122. 1310  CLS
  123. 1320  PRINT"ENTER ANY KEY TO CONTINUE. ENTER Q TO QUIT."
  124. 1330  S$=INKEY$:IF S$="" THEN 1330
  125. 1340  IF S$="Q" THEN END
  126. 1350  PRINT"ENTER WPM";:INPUT F
  127. 1360  T=(F+1)*5:T$="T"+STR$(T):PLAY T$
  128. 1370  PRINT: PRINT
  129. 1380  PRINT "MODES OF OPERATION:"
  130. 1390  PRINT "1 = MANUAL INPUT"
  131. 1400  PRINT "2 = RANDOM FIVE-CHARACTER CODE GROUPS"
  132. 1410  PRINT "3 = RANDOM PLSO WORD GROUPS"
  133. 1420  PRINT "4 = MERGE FILES"
  134. 1430  PRINT "ENTER DESIRED MODE (ONE ONLY):";: INPUT M
  135. 1440  IF M=1 THEN 1490
  136. 1450  IF M=2 THEN 1770
  137. 1460  IF M=3 THEN 2030
  138. 1470  IF M=4 THEN 2310
  139. 1480  GOTO 1430
  140. 1490  I=0: CLS
  141. 1500  PRINT "MANUAL INPUT MODE: SELECT YOUR OWN DATA AND ENTER AS DESIRED:"
  142. 1510  PRINT "WHEN ALL MANUAL INPUT IS COMPLETE, PRESS -ESC- TO CONTINUE"
  143. 1520  PRINT: PRINT:
  144. 1530  U$=INKEY$: IF U$="" THEN 1530
  145. 1540  C=ASC(U$): PRINT U$;
  146. 1550  I=I+1
  147. 1560  GOSUB 1580
  148. 1570  IF C=27 THEN 2430 ELSE 1530
  149. 1580  REM SUBROUTINE CHARACTER INPUT
  150. 1590  REM "C = CHARACTER  I = POINTER"
  151. 1600  IF I < 256 THEN V(I)=C ELSE 1620
  152. 1610  RETURN
  153. 1620  IF I < 512 THEN X(I-256)=C ELSE 1640
  154. 1630  RETURN
  155. 1640  IF I < 768 THEN Y(I-512)=C ELSE 1660
  156. 1650  RETURN
  157. 1660  IF I < 1023 THEN Z(I-768)=C ELSE Z(255)=27
  158. 1670  PRINT "OVERFLOW":RETURN
  159. 1680  IF I < 256 THEN C=V(I) ELSE 1710
  160. 1690  REM SUBROUTINE "CHARACTER OUTPUT" C=CHARACTER, I=POINTER
  161. 1700  RETURN
  162. 1710  IF I < 512 THEN C=X(I-256) ELSE 1730
  163. 1720  RETURN
  164. 1730  IF I < 768 THEN C=Y(I-512) ELSE 1750
  165. 1740  RETURN
  166. 1750  IF I < 1023 THEN C=Z(I-768) ELSE C=27
  167. 1760  PRINT "OVERFLOW": RETURN
  168. 1770  CLS
  169. 1780  REM "RANDOM CODE GROUPS"
  170. 1790  I=0
  171. 1800  PRINT "RANDOM FIVE-CHARACTER CODE GROUP MODE";:PRINT:PRINT
  172. 1810  PRINT "ENTER RANDOM NUMBER SEED (-32768 TO 32767)";:INPUT G:RANDOMIZE G
  173. 1820  PRINT "ENTER NUMBER OF CODE GROUPS DESIRED";: INPUT E
  174. 1830  PRINT "SELECT CODE GROUP FORMAT:"
  175. 1840  PRINT "       1 = LETTERS ONLY"
  176. 1850  PRINT "       2 = LETTERS & NUMBERS"
  177. 1860  INPUT F
  178. 1870  IF F=1 THEN 1890
  179. 1880  IF F=2 THEN 1890 ELSE 1830
  180. 1890  FOR J1=1 TO E
  181. 1900  FOR J2=1 TO 5
  182. 1910  I=I+1
  183. 1920  IF F=1 THEN C=INT(25*RND)+65
  184. 1930  IF F=2 THEN C=INT(35*RND)+55
  185. 1940  IF C<65 THEN C=C-7
  186. 1950  GOSUB 1580
  187. 1960  NEXT J2
  188. 1970  I=I+1: C=32
  189. 1980  GOSUB 1580
  190. 1990  NEXT J1
  191. 2000  I=I+1: C=27
  192. 2010  GOSUB 1580
  193. 2020  GOTO 2430
  194. 2030  CLS: I=0
  195. 2040  REM "PLSO CODE GROUPS"
  196. 2050  PRINT "RANDOM PLSO WORD GROUPS MODE";:PRINT:PRINT
  197. 2060  PRINT "ENTER RANDOM NUMBER SEED(FROM-32768 TO +32767)";:INPUT G:RANDOMIZE G
  198. 2070  PRINT "ENTER NUMBER OF PLSO WORD GROUPS DESIRED:";: INPUT E
  199. 2080  PRINT "SELECT CODE GROUP FORMAT:"
  200. 2090  PRINT "       1 = LETTERS ONLY"
  201. 2100  PRINT "       2 = LETTERS & NUMBERS"
  202. 2110  INPUT F
  203. 2120  IF F=1 THEN 2140
  204. 2130  IF F=2 THEN 2140 ELSE 2080
  205. 2140  FOR J1=1 TO E
  206. 2150  IF F=1 THEN K=INT(25*RND)+65
  207. 2160  IF F=2 THEN K=INT(35*RND)+55
  208. 2170  IF K < 65 THEN K=K-7
  209. 2180  GOSUB 2250
  210. 2190  I=I+1: C=32
  211. 2200  GOSUB 1580
  212. 2210  NEXT J1
  213. 2220  I=I+1: C=27
  214. 2230  GOSUB 1580
  215. 2240  GOTO 2430
  216. 2250  J3=1
  217. 2260  REM "PLSO CHARACTER INPUT"
  218. 2270  R$=MID$(L$(K),J3,1): C=ASC(R$)
  219. 2280  IF R$="/" THEN RETURN
  220. 2290  I=I+1:GOSUB 1580
  221. 2300  J3=J3+1: GOTO 2270
  222. 2310  REM MERGE FILES
  223. 2320  I=1
  224. 2330  CLS:PRINT"MERGE FILES":PRINT"ENTER 'DONE' TO COMPLETE MERGE"
  225. 2340  PRINT"ENTER FILE NAME";:INPUT N$
  226. 2350  IF N$="DONE"THEN 2430
  227. 2360  OPEN "I",#1,N$
  228. 2370  I=I-1
  229. 2380  I=I+1
  230. 2390  INPUT #1,C
  231. 2400  GOSUB 1580
  232. 2410  IF C=27 THEN 2420 ELSE 2380
  233. 2420  CLOSE #1:GOTO 2330
  234. 2430  REM "SAVE/DISPLAY FILE"
  235. 2440  CLS
  236. 2450  PRINT "DO YOU WANT TO DISPLAY FILE: Y=YES  N=NO";: INPUT N$
  237. 2460  IF N$ = "N" THEN 2550
  238. 2470  IF N$ = "Y" THEN 2480 ELSE 2450
  239. 2480  I=0:C5=0
  240. 2490  I=I+1: GOSUB 1680
  241. 2500  IF C=27 THEN 2550
  242. 2510  PRINT CHR$(C);
  243. 2520  IF C=32 THEN C5=C5+1
  244. 2530  IF C5=8 THEN PRINT CHR$(13):C5=0
  245. 2540  GOTO 2490
  246. 2550  PRINT:PRINT "DO YOU WANT A HARD-COPY OF THE DATA?  Y=YES  N=NO "
  247. 2560  PRINT "IF -YES- IS YOUR PRINTER ON-LINE AND READY TO PRINT";:INPUT N$
  248. 2570  IF N$ = "N" THEN 2650
  249. 2580  I=0:C5=0
  250. 2590  I=I+1: GOSUB 1680
  251. 2600  IF C=27 THEN 2650
  252. 2610  LPRINT CHR$(C);
  253. 2620  IF C=32 THEN C5=C5+1
  254. 2630  IF C5=8 THEN LPRINT CHR$(13):C5=0
  255. 2640  GOTO 2590
  256. 2650  PRINT "DO YOU WANT TO SAVE FILE: Y=YES  N=NO";: INPUT N$
  257. 2660  IF N$ = "N" THEN 2750
  258. 2670  IF N$ = "Y" THEN 2680 ELSE 2650
  259. 2680  PRINT "ENTER FILE NAME";: INPUT N$
  260. 2690  I=0
  261. 2700  OPEN "O", #1, N$
  262. 2710  I=I+1: GOSUB 1680
  263. 2720  PRINT #1, C
  264. 2730  IF C=27 THEN 2740 ELSE 2710
  265. 2740  CLOSE #1
  266. 2750  PRINT "DO YOU WANT TONE OUTPUT: Y=YES  N=NO";: INPUT N$
  267. 2760  IF N$ = "N" THEN 1310
  268. 2770  IF N$ = "Y" THEN 2780 ELSE 2750
  269. 2780  REM "TONE OUTPUT"
  270. 2790  PRINT:PRINT:PRINT "                      STAND BY TO COPY"
  271. 2800  FOR I=1 TO  2000
  272. 2810  NEXT I
  273. 2820  I=0
  274. 2830  I=I+1: GOSUB 1680
  275. 2840  IF C=27 THEN 1310
  276. 2850  PLAY C$(C)
  277. 2860  GOTO 2830
  278. 2870  END
  279.